//
//  Person.h
//  08-IOS9新特性(Nullability,泛型,_kindof)
//
//  Created by dllo on 16/7/13.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject

// Nullability(只能用在对象类型上) 是在编译层次上加了一些改动
// nonnull 声明的属性,不能为空 (getter 和 setter方法)
//@property (nonnull, nonatomic, copy) NSString *name;
// __nonnull 在声明属性的类型后加__nonnull
@property (nonatomic, copy) NSString * name;
// nullable 声明的属性,是可以为空 (getter 和 setter方法)
//@property (nullable, nonatomic, copy) NSString *sex;
// __nullable 在声明属性的类型后加 __nullable
@property (nonatomic, copy) NSString * __nullable sex;

// setter方法是nullable getter方法是nonnull
// 举例UIviewController中的view属性
@property (null_resettable, nonatomic, strong) NSArray *friends;

@property (nonatomic, strong) NSDictionary *dic;

// NS_ASSUME_NONNULL_BEGIN
// NS_ASSUME_NONNULL_END
// 一般应用于头文件.h 一般将声明包含起来
// 针对所有属性,添加 nonnull 修饰
// 也就是说,除了nullable 和 null_resettable 需要加修饰,其他的不需要

//不可像下面这样
//@property (nonnull, nonatomic, assign) NSInteger numebr


@end
NS_ASSUME_NONNULL_END
